A "Solution" packages customizations and components that work together to provide functionality.
  • Benefits of solutions: Focus on specific components, tie solutions to requirements, export/import (zip files), use to install/uninstall functionality, publisher can be identified, easier change control.
  • Solution fields: Name, Description, Date created/updated, Date installed, Publisher, Is Managed, Version
  • Version field: consists of four numbers: major.minor.build.revision
    • Some other ways to specify version: 1.0.0.14089 ("14" = year and "089" = day of the year); 2014.03.25.01 (year month day and release for the day)
  • Publisher: Publisher’s name and component prefix (up to 8 chars). Option Value Prefix sets default picklist item integer value.
  • "Default Solution": The base solution, created when installing CRM.
  • Solutions can contain the following components, which you can add or remove (last updated 8/11/2017):
    • App
    • Application Ribbon
    • Article Template
    • Business Rule
    • Chart
    • Client Extension
    • Connection Role
    • Contract Template
    • Dashboard
    • Email Template
    • Entity
    • Entity Relationship
    • Field
    • Field Security Profile
    • Form
    • Mail Merge Template
    • Message
    • Mobile Offline Profile
    • Option Set
    • Plug-in Assembly
    • Process
    • Record Creation and Update Rule
    • Report
    • Routing Rule Set
    • Sdk Message Processing Step
    • Security Role (for root Business Unit only)
    • Service Endpoint
    • Site Map
    • SLA
    • Views
    • Web Resource
  • Solutions cannot contain users, teams, business units, queues, goals, security roles for other business units, subjects, products (and related), reports deployed directly to SSRS, entity data.
  • Unmanaged solutions only reference components; if you delete an unmanaged solution CRM only removes this solution "wrapper" around components.
  • Managed solutions: Can be uninstalled after it is imported; To create a managed solution, choose the "managed solution" option when exporting the solution.
    • When creating a managed solution that includes entities, the export process compares the original entity definition (fields, form, views, etc.) and only includes what's different. If there are elements that you don't want to import into the target CRM organization when importing the managed solution, you can remove unwanted nodes from the customizations xml and update the managed solution zip file before distributing/importing the managed solution.
  • Unmanaged vs. Managed solutions: Determined during export; For internal changes (system to system), usually use Unmanaged. Solutions for sale (ISV) are typically exported as Managed. Imported unmanaged solution components become meshed with the Default Solution but for Managed the components/changes are kept separate.
  • Plugins (plug-ins): During import, CRM will not remove existing Sdk Message Processing Steps that are already in place for an plug-in assembly. Example: In production you have assembly Mycorp.Plugins with 10 steps registered. In a dev environment, you add a plug-in (class) and two new steps in the same assembly and add the assembly and the news steps to a new solution. You then import that solution into production. You will now have 12 Sdk Message Processing Steps registered for the plug-in assembly. CRM will not remove the previously-registered steps.
  • Importing:
    • When you import an unmanaged solution, all customizations/configuration are added to CRM or overwrite existing customizations/configuration. Be sure that you know (and verify) the contents of the solution.
    • You cannot import a solution if the target environment’s major or minor version numbers are below the solution’s source environment.
    • Importing a default solution from on-premises to Online (and vice-versa) is not supported. Custom solutions are ok, just not default solutions.
    • Solutions never delete anything but importing an unmanaged solution can overwrite existing components.
    • You must have the system admin security role in order to import a solution that contains security roles, organization settings, sdk message processing steps and plug-in assemblies.
    • All imported security roles will be attached to the root business unit.
    • If you don’t add required components to a solution, the target environment must have those required components when importing.
  • Exporting:
    • You should export the default solution periodically to make a backup of the organization's customizations. You can only export the default solution as unmanaged.
    • To create a managed solution, you choose the managed solution option when you export the solution. If you create a managed solution, you can’t import it back into the same organization you used to create it. You can only import it into a different organization.
    • CRM does not include unpublished customizations in an exported solution.
    • Update the version number when exporting a solution. The version number is added to the solution file's file name (zip file).

How solutions are applied

All solutions are evaluated as layers to determine what your CRM application will actually do. The following diagram shows how managed and unmanaged solutions are evaluated and how changes in them will appear in your organization.
wiki_solutions1.png


Information to add to this page (TODO)

  • Structure of solution zip files